package com.qf.service.impl;

import com.qf.dao.StudentDao;
import com.qf.dao.impl.StudentDaoImpl;
import com.qf.pojo.Page;
import com.qf.pojo.Student;
import com.qf.service.StudentService;

import java.util.List;

/**
 * @date 2022/3/28
 * @desc
 */
public class StudentServiceImpl implements StudentService {
    StudentDao studentDao = new StudentDaoImpl();

    @Override
    public List<Student> findStudents() {

        return studentDao.findStudents();
    }

    @Override
    public int deleteStudentById(int id) {
        return studentDao.deleteStudentById(id);
    }

    @Override
    public int addStudent(Student student) {
        return studentDao.addStudent(student);
    }

    @Override
    public Student findStudentById(int id) {
        return studentDao.findStudentById(id);
    }

    @Override
    public int updateStudentById(Student student) {
        return studentDao.updateStudentById(student);
    }

    @Override
    public Page getPageData(Page page) {

        //传过来的 page 里面 已经有  页码 和 pagesize 了, 咱么需要在 service 中
        //把其他属性封装好
        //private List<T> pageData;   // 分页列表数据
        //
        //private int  pageNum;   // 页码  当前第几页   页面传过来的
        //
        //private int pageSize;   // 每页显示几条数据    写死了 10
        //
        //private int totalPageNum;  //  一共多少页
        //
        //private int totalRecord;  //一共多少条记录
        //
        //private int startPageNum;   // 页面上的起始页码
        //
        //private int endPageNum;   // 页面上的结束页码



        //1. 封装  pageData 属性
        List<Student> list  = studentDao.getPageDate(page);
        page.setPageData(list);

        //2.封装 totalRecord 总记录数
        int totalRecord = studentDao.getTotalRecored();
        page.setTotalRecord(totalRecord);
        //3.封装总页数   总记录数有了   pageSize 也有了  ，一共有多少页？
        int totalPageNum = (totalRecord % page.getPageSize())==0 ? (totalRecord / page.getPageSize()):(totalRecord/page.getPageSize()+1);
        page.setTotalPageNum(totalPageNum);


        //4. 封装  startPageNum  和  endPageNum   假设一共10 页
        // 首页  上一页   1   2   3   4   5  下一页   尾页       当前页码 是  1   2    3
        // 首页  上一页   3   4   5   6   7  下一页   尾页       当前页码 是 5
        // 首页  上一页   5   6   7   8   9  下一页   尾页       当前页码 是 7
        // 首页  上一页   6   7   8   9   10  下一页  尾页       当前页码 是 8
        // 首页  上一页   6   7   8   9   10  下一页  尾页       当前页码 是 9   10

        int startPageNum = 1;
        int endPageNum = 5;


        //翻到 第4页 及 之后
        if(page.getPageNum()-2>1){
            startPageNum = page.getPageNum() -2 ;
            endPageNum = page.getPageNum() + 2;
        }


        //翻到 倒数第二页 及 最后一页
        if(page.getPageNum()+2 > page.getTotalPageNum()){
            startPageNum = page.getTotalPageNum() -4;
            endPageNum = page.getTotalPageNum();
        }

        //总页码 小于等于 5
        if(page.getTotalPageNum()<=5){
            startPageNum = 1;
            endPageNum = page.getTotalPageNum();
        }

        page.setStartPageNum(startPageNum);
        page.setEndPageNum(endPageNum);

        return page;
    }

    @Override
    public Page getPageDataByCondition(Page page, Student student) {

        //1. 封装  pageData 属性
        List<Student> list  = studentDao.getPageDataByCondition(page,student);
        page.setPageData(list);

        //2.封装 totalRecord 总记录数
        int totalRecord = studentDao.getTotalRecoreByCondition(student);
        page.setTotalRecord(totalRecord);
        //3.封装总页数   总记录数有了   pageSize 也有了  ，一共有多少页？
        int totalPageNum = (totalRecord % page.getPageSize())==0 ? (totalRecord / page.getPageSize()):(totalRecord/page.getPageSize()+1);
        page.setTotalPageNum(totalPageNum);


        //4. 封装  startPageNum  和  endPageNum   假设一共10 页
        // 首页  上一页   1   2   3   4   5  下一页   尾页       当前页码 是  1   2    3
        // 首页  上一页   3   4   5   6   7  下一页   尾页       当前页码 是 5
        // 首页  上一页   5   6   7   8   9  下一页   尾页       当前页码 是 7
        // 首页  上一页   6   7   8   9   10  下一页  尾页       当前页码 是 8
        // 首页  上一页   6   7   8   9   10  下一页  尾页       当前页码 是 9   10

        int startPageNum = 1;
        int endPageNum = 5;


        //翻到 第4页 及 之后
        if(page.getPageNum()-2>1){
            startPageNum = page.getPageNum() -2 ;
            endPageNum = page.getPageNum() + 2;
        }


        //翻到 倒数第二页 及 最后一页
        if(page.getPageNum()+2 > page.getTotalPageNum()){
            startPageNum = page.getTotalPageNum() -4;
            endPageNum = page.getTotalPageNum();
        }

        //总页码 小于等于 5
        if(page.getTotalPageNum()<=5){
            startPageNum = 1;
            endPageNum = page.getTotalPageNum();
        }

        page.setStartPageNum(startPageNum);
        page.setEndPageNum(endPageNum);

        return page;
    }
}
